feat: add Redis browser session inventory and revocation - #4
Merged
Conversation
dbotwinick
marked this pull request as ready for review
September 11, 2026 23:29
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Redis/Valkey browser sessions can now be listed by subject and revoked individually or together across auth-proxy replicas. The optional
login.SessionManagerAPI returns provider and creation/expiry metadata with management IDs that cannot authenticate as cookies; JWT mode remains stateless.The store maintains expiring per-user indexes and checks a persistent generation on each request. Lua scripts coordinate session creation with bulk revocation and preserve the original claim JSON. Legacy sessions migrate on use, while revoke-all also invalidates sessions that have not yet migrated. All serving replicas must upgrade together; rollback or stale-state recovery requires a fresh prefix and new sign-ins.
Validation: Go 1.25.14; affected login/authproxy/auth packages pass race tests against real Valkey, including concurrent revocation, legacy sessions, IDNA normalization, expiry, cross-user isolation and claim preservation.
go vet ./...and module tidy checks pass. Auth-go integration tests verify signed OAuth sessions fail both public checkz and internal verification after revocation; its private admin API and browser workflow are tested with PostgreSQL and Valkey. The full Aether server short/race suite also passed. CI exposed GO-2026-5970 in the existing x/text dependency; the follow-up dependency update uses x/text v0.39.0 (and x/sync v0.21.0), and local govulncheck now reports no reachable vulnerabilities.This supports the accompanying Scitrera Auth session-management work. No release version or tag is changed.